@@ -14,11 +14,11 @@ module LiquidInterpolatable |
||
14 | 14 |
end |
15 | 15 |
end |
16 | 16 |
|
17 |
- def interpolated_options(payload = {}) |
|
17 |
+ def interpolated(payload = {}) |
|
18 | 18 |
key = [options, payload] |
19 |
- @interpolated_options_cache ||= {} |
|
20 |
- @interpolated_options_cache[key] ||= interpolate_options(options, payload) |
|
21 |
- @interpolated_options_cache[key] |
|
19 |
+ @interpolated_cache ||= {} |
|
20 |
+ @interpolated_cache[key] ||= interpolate_options(options, payload) |
|
21 |
+ @interpolated_cache[key] |
|
22 | 22 |
end |
23 | 23 |
|
24 | 24 |
def interpolate_string(string, payload) |
@@ -54,9 +54,9 @@ module Agents |
||
54 | 54 |
end |
55 | 55 |
|
56 | 56 |
def check |
57 |
- auth_options = {:basic_auth => {:username =>interpolated_options[:username], :password=>interpolated_options['password']}} |
|
58 |
- parse_response = HTTParty.get "http://api.adioso.com/v2/search/parse?q=#{URI.encode(interpolated_options['from'])}+to+#{URI.encode(interpolated_options['to'])}", auth_options |
|
59 |
- fare_request = parse_response["search_url"].gsub /(end=)(\d*)([^\d]*)(\d*)/, "\\1#{date_to_unix_epoch(interpolated_options['end_date'])}\\3#{date_to_unix_epoch(interpolated_options['start_date'])}" |
|
57 |
+ auth_options = {:basic_auth => {:username =>interpolated[:username], :password=>interpolated['password']}} |
|
58 |
+ parse_response = HTTParty.get "http://api.adioso.com/v2/search/parse?q=#{URI.encode(interpolated['from'])}+to+#{URI.encode(interpolated['to'])}", auth_options |
|
59 |
+ fare_request = parse_response["search_url"].gsub /(end=)(\d*)([^\d]*)(\d*)/, "\\1#{date_to_unix_epoch(interpolated['end_date'])}\\3#{date_to_unix_epoch(interpolated['start_date'])}" |
|
60 | 60 |
fare = HTTParty.get fare_request, auth_options |
61 | 61 |
|
62 | 62 |
if fare["warnings"] |
@@ -64,7 +64,7 @@ module Agents |
||
64 | 64 |
else |
65 | 65 |
event = fare["results"].min {|a,b| a["cost"] <=> b["cost"]} |
66 | 66 |
event["date"] = Time.at(event["date"]).to_date.httpdate[0..15] |
67 |
- event["route"] = "#{interpolated_options['from']} to #{interpolated_options['to']}" |
|
67 |
+ event["route"] = "#{interpolated['from']} to #{interpolated['to']}" |
|
68 | 68 |
create_event :payload => event |
69 | 69 |
end |
70 | 70 |
end |
@@ -76,11 +76,11 @@ module Agents |
||
76 | 76 |
|
77 | 77 |
private |
78 | 78 |
def request_url |
79 |
- "https://basecamp.com/#{URI.encode(interpolated_options[:user_id].to_s)}/api/v1/projects/#{URI.encode(interpolated_options[:project_id].to_s)}/events.json" |
|
79 |
+ "https://basecamp.com/#{URI.encode(interpolated[:user_id].to_s)}/api/v1/projects/#{URI.encode(interpolated[:project_id].to_s)}/events.json" |
|
80 | 80 |
end |
81 | 81 |
|
82 | 82 |
def request_options |
83 |
- {:basic_auth => {:username => interpolated_options[:username], :password => interpolated_options[:password]}, :headers => {"User-Agent" => "Huginn (https://github.com/cantino/huginn)"}} |
|
83 |
+ {:basic_auth => {:username => interpolated[:username], :password => interpolated[:password]}, :headers => {"User-Agent" => "Huginn (https://github.com/cantino/huginn)"}} |
|
84 | 84 |
end |
85 | 85 |
|
86 | 86 |
def query_parameters |
@@ -61,27 +61,27 @@ module Agents |
||
61 | 61 |
end |
62 | 62 |
|
63 | 63 |
def events_to_show |
64 |
- (interpolated_options['events_to_show'].presence || 40).to_i |
|
64 |
+ (interpolated['events_to_show'].presence || 40).to_i |
|
65 | 65 |
end |
66 | 66 |
|
67 | 67 |
def feed_ttl |
68 |
- (interpolated_options['ttl'].presence || 60).to_i |
|
68 |
+ (interpolated['ttl'].presence || 60).to_i |
|
69 | 69 |
end |
70 | 70 |
|
71 | 71 |
def feed_title |
72 |
- interpolated_options['template']['title'].presence || "#{name} Event Feed" |
|
72 |
+ interpolated['template']['title'].presence || "#{name} Event Feed" |
|
73 | 73 |
end |
74 | 74 |
|
75 | 75 |
def feed_link |
76 |
- interpolated_options['template']['link'].presence || "https://#{ENV['DOMAIN']}" |
|
76 |
+ interpolated['template']['link'].presence || "https://#{ENV['DOMAIN']}" |
|
77 | 77 |
end |
78 | 78 |
|
79 | 79 |
def feed_description |
80 |
- interpolated_options['template']['description'].presence || "A feed of Events received by the '#{name}' Huginn Agent" |
|
80 |
+ interpolated['template']['description'].presence || "A feed of Events received by the '#{name}' Huginn Agent" |
|
81 | 81 |
end |
82 | 82 |
|
83 | 83 |
def receive_web_request(params, method, format) |
84 |
- if interpolated_options['secrets'].include?(params['secret']) |
|
84 |
+ if interpolated['secrets'].include?(params['secret']) |
|
85 | 85 |
items = received_events.order('id desc').limit(events_to_show).map do |event| |
86 | 86 |
interpolated = interpolate_options(options['template']['item'], event.payload) |
87 | 87 |
interpolated['guid'] = event.id |
@@ -25,7 +25,7 @@ module Agents |
||
25 | 25 |
def receive(incoming_events) |
26 | 26 |
incoming_events.each do |event| |
27 | 27 |
log "Sending digest mail to #{user.email} with event #{event.id}" |
28 |
- SystemMailer.delay.send_message(:to => user.email, :subject => interpolated_options(event.payload)['subject'], :headline => interpolated_options(event.payload)['headline'], :groups => [present(event.payload)]) |
|
28 |
+ SystemMailer.delay.send_message(:to => user.email, :subject => interpolated(event.payload)['subject'], :headline => interpolated(event.payload)['headline'], :groups => [present(event.payload)]) |
|
29 | 29 |
end |
30 | 30 |
end |
31 | 31 |
end |
@@ -37,7 +37,7 @@ module Agents |
||
37 | 37 |
ids = self.memory['events'].join(",") |
38 | 38 |
groups = self.memory['queue'].map { |payload| present(payload) } |
39 | 39 |
log "Sending digest mail to #{user.email} with events [#{ids}]" |
40 |
- SystemMailer.delay.send_message(:to => user.email, :subject => interpolated_options['subject'], :headline => interpolated_options['headline'], :groups => groups) |
|
40 |
+ SystemMailer.delay.send_message(:to => user.email, :subject => interpolated['subject'], :headline => interpolated['headline'], :groups => groups) |
|
41 | 41 |
self.memory['queue'] = [] |
42 | 42 |
self.memory['events'] = [] |
43 | 43 |
end |
@@ -105,7 +105,7 @@ module Agents |
||
105 | 105 |
def receive(incoming_events) |
106 | 106 |
incoming_events.each do |event| |
107 | 107 |
payload = perform_matching(event.payload) |
108 |
- opts = interpolated_options(payload) |
|
108 |
+ opts = interpolated(payload) |
|
109 | 109 |
formatted_event = opts['mode'].to_s == "merge" ? event.payload.dup : {} |
110 | 110 |
formatted_event.merge! opts['instructions'] |
111 | 111 |
formatted_event['agent'] = Agent.find(event.agent_id).type.slice!(8..-1) unless opts['skip_agent'].to_s == "true" |
@@ -29,7 +29,7 @@ module Agents |
||
29 | 29 |
MD |
30 | 30 |
|
31 | 31 |
def working? |
32 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
32 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
33 | 33 |
end |
34 | 34 |
|
35 | 35 |
def default_options |
@@ -90,10 +90,10 @@ module Agents |
||
90 | 90 |
end |
91 | 91 |
|
92 | 92 |
def each_entry |
93 |
- patterns = interpolated_options['patterns'] |
|
93 |
+ patterns = interpolated['patterns'] |
|
94 | 94 |
|
95 | 95 |
after = |
96 |
- if str = interpolated_options['after'] |
|
96 |
+ if str = interpolated['after'] |
|
97 | 97 |
Time.parse(str) |
98 | 98 |
else |
99 | 99 |
Time.at(0) |
@@ -174,7 +174,7 @@ module Agents |
||
174 | 174 |
end |
175 | 175 |
|
176 | 176 |
def base_uri |
177 |
- @base_uri ||= URI(interpolated_options['url']) |
|
177 |
+ @base_uri ||= URI(interpolated['url']) |
|
178 | 178 |
end |
179 | 179 |
|
180 | 180 |
def saving_entries |
@@ -26,7 +26,7 @@ module Agents |
||
26 | 26 |
end |
27 | 27 |
|
28 | 28 |
def working? |
29 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
29 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
30 | 30 |
end |
31 | 31 |
|
32 | 32 |
def validate_options |
@@ -36,13 +36,13 @@ module Agents |
||
36 | 36 |
end |
37 | 37 |
|
38 | 38 |
def register_growl |
39 |
- @growler = Growl.new interpolated_options['growl_server'], interpolated_options['growl_app_name'], "GNTP" |
|
40 |
- @growler.password = interpolated_options['growl_password'] |
|
41 |
- @growler.add_notification interpolated_options['growl_notification_name'] |
|
39 |
+ @growler = Growl.new interpolated['growl_server'], interpolated['growl_app_name'], "GNTP" |
|
40 |
+ @growler.password = interpolated['growl_password'] |
|
41 |
+ @growler.add_notification interpolated['growl_notification_name'] |
|
42 | 42 |
end |
43 | 43 |
|
44 | 44 |
def notify_growl(subject, message) |
45 |
- @growler.notify(interpolated_options['growl_notification_name'], subject, message) |
|
45 |
+ @growler.notify(interpolated['growl_notification_name'], subject, message) |
|
46 | 46 |
end |
47 | 47 |
|
48 | 48 |
def receive(incoming_events) |
@@ -51,7 +51,7 @@ module Agents |
||
51 | 51 |
message = (event.payload['message'] || event.payload['text']).to_s |
52 | 52 |
subject = event.payload['subject'].to_s |
53 | 53 |
if message.present? && subject.present? |
54 |
- log "Sending Growl notification '#{subject}': '#{message}' to #{interpolated_options(event.payload)['growl_server']} with event #{event.id}" |
|
54 |
+ log "Sending Growl notification '#{subject}': '#{message}' to #{interpolated(event.payload)['growl_server']} with event #{event.id}" |
|
55 | 55 |
notify_growl(subject,message) |
56 | 56 |
else |
57 | 57 |
log "Event #{event.id} not sent, message and subject expected" |
@@ -40,9 +40,9 @@ module Agents |
||
40 | 40 |
end |
41 | 41 |
|
42 | 42 |
def receive(incoming_events) |
43 |
- client = HipChat::Client.new(interpolated_options[:auth_token]) |
|
43 |
+ client = HipChat::Client.new(interpolated[:auth_token]) |
|
44 | 44 |
incoming_events.each do |event| |
45 |
- mo = interpolated_options(event.payload) |
|
45 |
+ mo = interpolated(event.payload) |
|
46 | 46 |
client[mo[:room_name]].send(mo[:username], mo[:message], :notify => mo[:notify].to_s == 'true' ? 1 : 0, :color => mo[:color]) |
47 | 47 |
end |
48 | 48 |
end |
@@ -202,20 +202,20 @@ module Agents |
||
202 | 202 |
end |
203 | 203 |
|
204 | 204 |
def working? |
205 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
205 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
206 | 206 |
end |
207 | 207 |
|
208 | 208 |
def check |
209 | 209 |
review_hits |
210 | 210 |
|
211 |
- if interpolated_options['trigger_on'] == "schedule" && (memory['last_schedule'] || 0) <= Time.now.to_i - interpolated_options['submission_period'].to_i * 60 * 60 |
|
211 |
+ if interpolated['trigger_on'] == "schedule" && (memory['last_schedule'] || 0) <= Time.now.to_i - interpolated['submission_period'].to_i * 60 * 60 |
|
212 | 212 |
memory['last_schedule'] = Time.now.to_i |
213 | 213 |
create_basic_hit |
214 | 214 |
end |
215 | 215 |
end |
216 | 216 |
|
217 | 217 |
def receive(incoming_events) |
218 |
- if interpolated_options['trigger_on'] == "event" |
|
218 |
+ if interpolated['trigger_on'] == "event" |
|
219 | 219 |
incoming_events.each do |event| |
220 | 220 |
create_basic_hit event |
221 | 221 |
end |
@@ -225,11 +225,11 @@ module Agents |
||
225 | 225 |
protected |
226 | 226 |
|
227 | 227 |
def take_majority? |
228 |
- interpolated_options['combination_mode'] == "take_majority" || interpolated_options['take_majority'] == "true" |
|
228 |
+ interpolated['combination_mode'] == "take_majority" || interpolated['take_majority'] == "true" |
|
229 | 229 |
end |
230 | 230 |
|
231 | 231 |
def create_poll? |
232 |
- interpolated_options['combination_mode'] == "poll" |
|
232 |
+ interpolated['combination_mode'] == "poll" |
|
233 | 233 |
end |
234 | 234 |
|
235 | 235 |
def event_for_hit(hit_id) |
@@ -365,7 +365,7 @@ module Agents |
||
365 | 365 |
end |
366 | 366 |
|
367 | 367 |
def all_questions_are_numeric? |
368 |
- interpolated_options['hit']['questions'].all? do |question| |
|
368 |
+ interpolated['hit']['questions'].all? do |question| |
|
369 | 369 |
question['selections'].all? do |selection| |
370 | 370 |
selection['key'] == selection['key'].to_f.to_s || selection['key'] == selection['key'].to_i.to_s |
371 | 371 |
end |
@@ -111,7 +111,7 @@ module Agents |
||
111 | 111 |
} |
112 | 112 |
|
113 | 113 |
def working? |
114 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
114 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
115 | 115 |
end |
116 | 116 |
|
117 | 117 |
def default_options |
@@ -240,7 +240,7 @@ module Agents |
||
240 | 240 |
matched_part = nil |
241 | 241 |
matches = {} |
242 | 242 |
|
243 |
- interpolated_options['conditions'].all? { |key, value| |
|
243 |
+ interpolated['conditions'].all? { |key, value| |
|
244 | 244 |
case key |
245 | 245 |
when 'subject' |
246 | 246 |
value.present? or next true |
@@ -308,7 +308,7 @@ module Agents |
||
308 | 308 |
notified << mail.message_id if mail.message_id |
309 | 309 |
end |
310 | 310 |
|
311 |
- if interpolated_options['mark_as_read'] |
|
311 |
+ if interpolated['mark_as_read'] |
|
312 | 312 |
log 'Marking as read' |
313 | 313 |
mail.mark_as_read |
314 | 314 |
end |
@@ -322,14 +322,14 @@ module Agents |
||
322 | 322 |
end |
323 | 323 |
|
324 | 324 |
def each_unread_mail |
325 |
- host, port, ssl, username = interpolated_options.values_at(:host, :port, :ssl, :username) |
|
325 |
+ host, port, ssl, username = interpolated.values_at(:host, :port, :ssl, :username) |
|
326 | 326 |
|
327 | 327 |
log "Connecting to #{host}#{':%d' % port if port}#{' via SSL' if ssl}" |
328 | 328 |
Client.open(host, Integer(port), ssl) { |imap| |
329 | 329 |
log "Logging in as #{username}" |
330 |
- imap.login(username, interpolated_options[:password]) |
|
330 |
+ imap.login(username, interpolated[:password]) |
|
331 | 331 |
|
332 |
- interpolated_options['folders'].each { |folder| |
|
332 |
+ interpolated['folders'].each { |folder| |
|
333 | 333 |
log "Selecting the folder: %s" % folder |
334 | 334 |
|
335 | 335 |
imap.select(folder) |
@@ -351,7 +351,7 @@ module Agents |
||
351 | 351 |
end |
352 | 352 |
|
353 | 353 |
def mime_types |
354 |
- interpolated_options['mime_types'] || %w[text/plain text/enriched text/html] |
|
354 |
+ interpolated['mime_types'] || %w[text/plain text/enriched text/html] |
|
355 | 355 |
end |
356 | 356 |
|
357 | 357 |
private |
@@ -28,12 +28,12 @@ module Agents |
||
28 | 28 |
end |
29 | 29 |
|
30 | 30 |
def working? |
31 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
31 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
32 | 32 |
end |
33 | 33 |
|
34 | 34 |
def receive(incoming_events) |
35 | 35 |
incoming_events.each do |event| |
36 |
- log "Sending IM to #{interpolated_options['jabber_receiver']} with event #{event.id}" |
|
36 |
+ log "Sending IM to #{interpolated['jabber_receiver']} with event #{event.id}" |
|
37 | 37 |
deliver body(event) |
38 | 38 |
end |
39 | 39 |
end |
@@ -43,15 +43,15 @@ module Agents |
||
43 | 43 |
end |
44 | 44 |
|
45 | 45 |
def deliver(text) |
46 |
- client.send Jabber::Message::new(interpolated_options['jabber_receiver'], text).set_type(:chat) |
|
46 |
+ client.send Jabber::Message::new(interpolated['jabber_receiver'], text).set_type(:chat) |
|
47 | 47 |
end |
48 | 48 |
|
49 | 49 |
private |
50 | 50 |
|
51 | 51 |
def client |
52 |
- Jabber::Client.new(Jabber::JID::new(interpolated_options['jabber_sender'])).tap do |sender| |
|
53 |
- sender.connect(interpolated_options['jabber_server'], interpolated_options['jabber_port'] || '5222') |
|
54 |
- sender.auth interpolated_options['jabber_password'] |
|
52 |
+ Jabber::Client.new(Jabber::JID::new(interpolated['jabber_sender'])).tap do |sender| |
|
53 |
+ sender.connect(interpolated['jabber_server'], interpolated['jabber_port'] || '5222') |
|
54 |
+ sender.auth interpolated['jabber_password'] |
|
55 | 55 |
end |
56 | 56 |
end |
57 | 57 |
|
@@ -60,7 +60,7 @@ module Agents |
||
60 | 60 |
end |
61 | 61 |
|
62 | 62 |
def body(event) |
63 |
- interpolated_options(event.payload)['message'] |
|
63 |
+ interpolated(event.payload)['message'] |
|
64 | 64 |
end |
65 | 65 |
end |
66 | 66 |
end |
@@ -35,12 +35,12 @@ module Agents |
||
35 | 35 |
def working? |
36 | 36 |
return false if recent_error_logs? |
37 | 37 |
|
38 |
- if interpolated_options['expected_update_period_in_days'].present? |
|
39 |
- return false unless event_created_within?(interpolated_options['expected_update_period_in_days']) |
|
38 |
+ if interpolated['expected_update_period_in_days'].present? |
|
39 |
+ return false unless event_created_within?(interpolated['expected_update_period_in_days']) |
|
40 | 40 |
end |
41 | 41 |
|
42 |
- if interpolated_options['expected_receive_period_in_days'].present? |
|
43 |
- return false unless last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago |
|
42 |
+ if interpolated['expected_receive_period_in_days'].present? |
|
43 |
+ return false unless last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago |
|
44 | 44 |
end |
45 | 45 |
|
46 | 46 |
true |
@@ -92,7 +92,7 @@ module Agents |
||
92 | 92 |
|
93 | 93 |
context["doCreateEvent"] = lambda { |a, y| create_event(payload: clean_nans(JSON.parse(y))).payload.to_json } |
94 | 94 |
context["getIncomingEvents"] = lambda { |a| incoming_events.to_json } |
95 |
- context["getOptions"] = lambda { |a, x| interpolated_options.to_json } |
|
95 |
+ context["getOptions"] = lambda { |a, x| interpolated.to_json } |
|
96 | 96 |
context["doLog"] = lambda { |a, x| log x } |
97 | 97 |
context["doError"] = lambda { |a, x| error x } |
98 | 98 |
context["getMemory"] = lambda do |a, x, y| |
@@ -112,12 +112,12 @@ module Agents |
||
112 | 112 |
if cred |
113 | 113 |
credential(cred) || 'Agent.check = function() { this.error("Unable to find credential"); };' |
114 | 114 |
else |
115 |
- interpolated_options['code'] |
|
115 |
+ interpolated['code'] |
|
116 | 116 |
end |
117 | 117 |
end |
118 | 118 |
|
119 | 119 |
def credential_referenced_by_code |
120 |
- interpolated_options['code'] =~ /\Acredential:(.*)\Z/ && $1 |
|
120 |
+ interpolated['code'] =~ /\Acredential:(.*)\Z/ && $1 |
|
121 | 121 |
end |
122 | 122 |
|
123 | 123 |
def setup_javascript |
@@ -56,7 +56,7 @@ module Agents |
||
56 | 56 |
end |
57 | 57 |
|
58 | 58 |
def working? |
59 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
59 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
60 | 60 |
end |
61 | 61 |
|
62 | 62 |
def check |
@@ -81,14 +81,14 @@ module Agents |
||
81 | 81 |
|
82 | 82 |
private |
83 | 83 |
def request_url(jql, start_at) |
84 |
- "#{interpolated_options[:jira_url]}/rest/api/2/search?jql=#{CGI::escape(jql)}&fields=*all&startAt=#{start_at}" |
|
84 |
+ "#{interpolated[:jira_url]}/rest/api/2/search?jql=#{CGI::escape(jql)}&fields=*all&startAt=#{start_at}" |
|
85 | 85 |
end |
86 | 86 |
|
87 | 87 |
def request_options |
88 | 88 |
ropts = {:headers => {"User-Agent" => "Huginn (https://github.com/cantino/huginn)"}} |
89 | 89 |
|
90 |
- if !interpolated_options[:username].empty? |
|
91 |
- ropts = ropts.merge({:basic_auth => {:username =>interpolated_options[:username], :password=>interpolated_options[:password]}}) |
|
90 |
+ if !interpolated[:username].empty? |
|
91 |
+ ropts = ropts.merge({:basic_auth => {:username =>interpolated[:username], :password=>interpolated[:password]}}) |
|
92 | 92 |
end |
93 | 93 |
|
94 | 94 |
ropts |
@@ -121,10 +121,10 @@ module Agents |
||
121 | 121 |
|
122 | 122 |
jql = "" |
123 | 123 |
|
124 |
- if !interpolated_options[:jql].empty? && since |
|
125 |
- jql = "(#{interpolated_options[:jql]}) and updated >= '#{since.strftime('%Y-%m-%d %H:%M')}'" |
|
124 |
+ if !interpolated[:jql].empty? && since |
|
125 |
+ jql = "(#{interpolated[:jql]}) and updated >= '#{since.strftime('%Y-%m-%d %H:%M')}'" |
|
126 | 126 |
else |
127 |
- jql = interpolated_options[:jql] if !interpolated_options[:jql].empty? |
|
127 |
+ jql = interpolated[:jql] if !interpolated[:jql].empty? |
|
128 | 128 |
jql = "updated >= '#{since.strftime('%Y-%m-%d %H:%M')}'" if since |
129 | 129 |
end |
130 | 130 |
|
@@ -142,7 +142,7 @@ module Agents |
||
142 | 142 |
raise RuntimeError.new("There is no progress while fetching issues") |
143 | 143 |
end |
144 | 144 |
|
145 |
- if Time.now > start_time + interpolated_options['timeout'].to_i * 60 |
|
145 |
+ if Time.now > start_time + interpolated['timeout'].to_i * 60 |
|
146 | 146 |
raise RuntimeError.new("Timeout exceeded while fetching issues") |
147 | 147 |
end |
148 | 148 |
|
@@ -74,7 +74,7 @@ module Agents |
||
74 | 74 |
end |
75 | 75 |
|
76 | 76 |
def working? |
77 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
77 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
78 | 78 |
end |
79 | 79 |
|
80 | 80 |
def default_options |
@@ -91,13 +91,13 @@ module Agents |
||
91 | 91 |
end |
92 | 92 |
|
93 | 93 |
def mqtt_client |
94 |
- @client ||= MQTT::Client.new(interpolated_options['uri']) |
|
94 |
+ @client ||= MQTT::Client.new(interpolated['uri']) |
|
95 | 95 |
|
96 |
- if interpolated_options['ssl'] |
|
97 |
- @client.ssl = interpolated_options['ssl'].to_sym |
|
98 |
- @client.ca_file = interpolated_options['ca_file'] |
|
99 |
- @client.cert_file = interpolated_options['cert_file'] |
|
100 |
- @client.key_file = interpolated_options['key_file'] |
|
96 |
+ if interpolated['ssl'] |
|
97 |
+ @client.ssl = interpolated['ssl'].to_sym |
|
98 |
+ @client.ca_file = interpolated['ca_file'] |
|
99 |
+ @client.cert_file = interpolated['cert_file'] |
|
100 |
+ @client.key_file = interpolated['key_file'] |
|
101 | 101 |
end |
102 | 102 |
|
103 | 103 |
@client |
@@ -106,7 +106,7 @@ module Agents |
||
106 | 106 |
def receive(incoming_events) |
107 | 107 |
mqtt_client.connect do |c| |
108 | 108 |
incoming_events.each do |event| |
109 |
- c.publish(interpolated_options(event.payload)['topic'], event.payload) |
|
109 |
+ c.publish(interpolated(event.payload)['topic'], event.payload) |
|
110 | 110 |
end |
111 | 111 |
|
112 | 112 |
c.disconnect |
@@ -117,8 +117,8 @@ module Agents |
||
117 | 117 |
def check |
118 | 118 |
mqtt_client.connect do |c| |
119 | 119 |
|
120 |
- Timeout::timeout((interpolated_options['max_read_time'].presence || 15).to_i) { |
|
121 |
- c.get(interpolated_options['topic']) do |topic, message| |
|
120 |
+ Timeout::timeout((interpolated['max_read_time'].presence || 15).to_i) { |
|
121 |
+ c.get(interpolated['topic']) do |topic, message| |
|
122 | 122 |
|
123 | 123 |
# A lot of services generate JSON. Try that first |
124 | 124 |
payload = JSON.parse(message) rescue message |
@@ -43,7 +43,7 @@ module Agents |
||
43 | 43 |
end |
44 | 44 |
|
45 | 45 |
def working? |
46 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
46 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
47 | 47 |
end |
48 | 48 |
|
49 | 49 |
def receive(incoming_events) |
@@ -67,7 +67,7 @@ module Agents |
||
67 | 67 |
if newest_value > average_value + std_multiple * standard_deviation |
68 | 68 |
memory['peaks'][group] << newest_time |
69 | 69 |
memory['peaks'][group].reject! { |p| p <= newest_time - window_duration } |
70 |
- create_event :payload => { 'message' => interpolated_options(event.payload)['message'], 'peak' => newest_value, 'peak_time' => newest_time, 'grouped_by' => group.to_s } |
|
70 |
+ create_event :payload => { 'message' => interpolated(event.payload)['message'], 'peak' => newest_value, 'peak_time' => newest_time, 'grouped_by' => group.to_s } |
|
71 | 71 |
end |
72 | 72 |
end |
73 | 73 |
end |
@@ -92,33 +92,33 @@ module Agents |
||
92 | 92 |
end |
93 | 93 |
|
94 | 94 |
def window_duration |
95 |
- if interpolated_options['window_duration'].present? # The older option |
|
96 |
- interpolated_options['window_duration'].to_i |
|
95 |
+ if interpolated['window_duration'].present? # The older option |
|
96 |
+ interpolated['window_duration'].to_i |
|
97 | 97 |
else |
98 |
- (interpolated_options['window_duration_in_days'] || 14).to_f.days |
|
98 |
+ (interpolated['window_duration_in_days'] || 14).to_f.days |
|
99 | 99 |
end |
100 | 100 |
end |
101 | 101 |
|
102 | 102 |
def std_multiple |
103 |
- (interpolated_options['std_multiple'] || 3).to_f |
|
103 |
+ (interpolated['std_multiple'] || 3).to_f |
|
104 | 104 |
end |
105 | 105 |
|
106 | 106 |
def peak_spacing |
107 |
- if interpolated_options['peak_spacing'].present? # The older option |
|
108 |
- interpolated_options['peak_spacing'].to_i |
|
107 |
+ if interpolated['peak_spacing'].present? # The older option |
|
108 |
+ interpolated['peak_spacing'].to_i |
|
109 | 109 |
else |
110 |
- (interpolated_options['min_peak_spacing_in_days'] || 2).to_f.days |
|
110 |
+ (interpolated['min_peak_spacing_in_days'] || 2).to_f.days |
|
111 | 111 |
end |
112 | 112 |
end |
113 | 113 |
|
114 | 114 |
def group_for(event) |
115 |
- ((interpolated_options['group_by_path'].present? && Utils.value_at(event.payload, interpolated_options['group_by_path'])) || 'no_group') |
|
115 |
+ ((interpolated['group_by_path'].present? && Utils.value_at(event.payload, interpolated['group_by_path'])) || 'no_group') |
|
116 | 116 |
end |
117 | 117 |
|
118 | 118 |
def remember(group, event) |
119 | 119 |
memory['data'] ||= {} |
120 | 120 |
memory['data'][group] ||= [] |
121 |
- memory['data'][group] << [ Utils.value_at(event.payload, interpolated_options['value_path']), event.created_at.to_i ] |
|
121 |
+ memory['data'][group] << [ Utils.value_at(event.payload, interpolated['value_path']), event.created_at.to_i ] |
|
122 | 122 |
cleanup group |
123 | 123 |
end |
124 | 124 |
|
@@ -27,15 +27,15 @@ module Agents |
||
27 | 27 |
end |
28 | 28 |
|
29 | 29 |
def working? |
30 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
30 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
31 | 31 |
end |
32 | 32 |
|
33 | 33 |
def method |
34 |
- (interpolated_options['method'].presence || 'post').to_s.downcase |
|
34 |
+ (interpolated['method'].presence || 'post').to_s.downcase |
|
35 | 35 |
end |
36 | 36 |
|
37 | 37 |
def headers |
38 |
- interpolated_options['headers'].presence || {} |
|
38 |
+ interpolated['headers'].presence || {} |
|
39 | 39 |
end |
40 | 40 |
|
41 | 41 |
def validate_options |
@@ -58,16 +58,16 @@ module Agents |
||
58 | 58 |
|
59 | 59 |
def receive(incoming_events) |
60 | 60 |
incoming_events.each do |event| |
61 |
- handle (interpolated_options(event.payload)['payload'].presence || {}).merge(event.payload) |
|
61 |
+ handle (interpolated(event.payload)['payload'].presence || {}).merge(event.payload) |
|
62 | 62 |
end |
63 | 63 |
end |
64 | 64 |
|
65 | 65 |
def check |
66 |
- handle interpolated_options['payload'].presence || {} |
|
66 |
+ handle interpolated['payload'].presence || {} |
|
67 | 67 |
end |
68 | 68 |
|
69 | 69 |
def generate_uri(params = nil) |
70 |
- uri = URI interpolated_options[:post_url] |
|
70 |
+ uri = URI interpolated[:post_url] |
|
71 | 71 |
uri.query = URI.encode_www_form(Hash[URI.decode_www_form(uri.query || '')].merge(params)) if params |
72 | 72 |
uri |
73 | 73 |
end |
@@ -48,12 +48,12 @@ module Agents |
||
48 | 48 |
MD |
49 | 49 |
|
50 | 50 |
def check_url |
51 |
- stop_query = URI.encode(interpolated_options["stops"].collect{|a| "&stops=#{a}"}.join) |
|
52 |
- "http://webservices.nextbus.com/service/publicXMLFeed?command=predictionsForMultiStops&a=#{interpolated_options["agency"]}#{stop_query}" |
|
51 |
+ stop_query = URI.encode(interpolated["stops"].collect{|a| "&stops=#{a}"}.join) |
|
52 |
+ "http://webservices.nextbus.com/service/publicXMLFeed?command=predictionsForMultiStops&a=#{interpolated["agency"]}#{stop_query}" |
|
53 | 53 |
end |
54 | 54 |
|
55 | 55 |
def stops |
56 |
- interpolated_options["stops"].collect{|a| a.split("|").last} |
|
56 |
+ interpolated["stops"].collect{|a| a.split("|").last} |
|
57 | 57 |
end |
58 | 58 |
|
59 | 59 |
def check |
@@ -65,7 +65,7 @@ module Agents |
||
65 | 65 |
predictions.each do |pr| |
66 | 66 |
parent = pr.parent.parent |
67 | 67 |
vals = {"routeTitle" => parent["routeTitle"], "stopTag" => parent["stopTag"]} |
68 |
- if pr["minutes"] && pr["minutes"].to_i < interpolated_options["alert_window_in_minutes"].to_i |
|
68 |
+ if pr["minutes"] && pr["minutes"].to_i < interpolated["alert_window_in_minutes"].to_i |
|
69 | 69 |
vals = vals.merge Hash.from_xml(pr.to_xml) |
70 | 70 |
if not_already_in_memory?(vals) |
71 | 71 |
create_event(:payload => vals) |
@@ -49,7 +49,7 @@ module Agents |
||
49 | 49 |
private |
50 | 50 |
|
51 | 51 |
def query_options(event) |
52 |
- mo = interpolated_options(event.payload) |
|
52 |
+ mo = interpolated(event.payload) |
|
53 | 53 |
{ |
54 | 54 |
:basic_auth => {:username => mo[:api_key], :password => ''}, |
55 | 55 |
:body => {:device_iden => mo[:device_id], :title => mo[:title], :body => mo[:body], :type => 'note'} |
@@ -58,37 +58,37 @@ module Agents |
||
58 | 58 |
|
59 | 59 |
def receive(incoming_events) |
60 | 60 |
incoming_events.each do |event| |
61 |
- payload_interpolated_options = interpolated_options(event.payload) |
|
62 |
- message = (event.payload['message'].presence || event.payload['text'].presence || payload_interpolated_options['message']).to_s |
|
61 |
+ payload_interpolated = interpolated(event.payload) |
|
62 |
+ message = (event.payload['message'].presence || event.payload['text'].presence || payload_interpolated['message']).to_s |
|
63 | 63 |
if message.present? |
64 | 64 |
post_params = { |
65 |
- 'token' => payload_interpolated_options['token'], |
|
66 |
- 'user' => payload_interpolated_options['user'], |
|
65 |
+ 'token' => payload_interpolated['token'], |
|
66 |
+ 'user' => payload_interpolated['user'], |
|
67 | 67 |
'message' => message |
68 | 68 |
} |
69 | 69 |
|
70 |
- post_params['device'] = event.payload['device'].presence || payload_interpolated_options['device'] |
|
71 |
- post_params['title'] = event.payload['title'].presence || event.payload['subject'].presence || payload_interpolated_options['title'] |
|
70 |
+ post_params['device'] = event.payload['device'].presence || payload_interpolated['device'] |
|
71 |
+ post_params['title'] = event.payload['title'].presence || event.payload['subject'].presence || payload_interpolated['title'] |
|
72 | 72 |
|
73 |
- url = (event.payload['url'].presence || payload_interpolated_options['url'] || '').to_s |
|
73 |
+ url = (event.payload['url'].presence || payload_interpolated['url'] || '').to_s |
|
74 | 74 |
url = url.slice 0..512 |
75 | 75 |
post_params['url'] = url |
76 | 76 |
|
77 |
- url_title = (event.payload['url_title'].presence || payload_interpolated_options['url_title']).to_s |
|
77 |
+ url_title = (event.payload['url_title'].presence || payload_interpolated['url_title']).to_s |
|
78 | 78 |
url_title = url_title.slice 0..100 |
79 | 79 |
post_params['url_title'] = url_title |
80 | 80 |
|
81 |
- post_params['priority'] = (event.payload['priority'].presence || payload_interpolated_options['priority']).to_i |
|
81 |
+ post_params['priority'] = (event.payload['priority'].presence || payload_interpolated['priority']).to_i |
|
82 | 82 |
|
83 | 83 |
if event.payload.has_key? 'timestamp' |
84 | 84 |
post_params['timestamp'] = (event.payload['timestamp']).to_s |
85 | 85 |
end |
86 | 86 |
|
87 |
- post_params['sound'] = (event.payload['sound'].presence || payload_interpolated_options['sound']).to_s |
|
87 |
+ post_params['sound'] = (event.payload['sound'].presence || payload_interpolated['sound']).to_s |
|
88 | 88 |
|
89 |
- post_params['retry'] = (event.payload['retry'].presence || payload_interpolated_options['retry']).to_i |
|
89 |
+ post_params['retry'] = (event.payload['retry'].presence || payload_interpolated['retry']).to_i |
|
90 | 90 |
|
91 |
- post_params['expire'] = (event.payload['expire'].presence || payload_interpolated_options['expire']).to_i |
|
91 |
+ post_params['expire'] = (event.payload['expire'].presence || payload_interpolated['expire']).to_i |
|
92 | 92 |
|
93 | 93 |
send_notification(post_params) |
94 | 94 |
end |
@@ -96,7 +96,7 @@ module Agents |
||
96 | 96 |
end |
97 | 97 |
|
98 | 98 |
def working? |
99 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
99 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
100 | 100 |
end |
101 | 101 |
|
102 | 102 |
def send_notification(post_params) |
@@ -34,13 +34,13 @@ module Agents |
||
34 | 34 |
end |
35 | 35 |
|
36 | 36 |
def working? |
37 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
37 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
38 | 38 |
end |
39 | 39 |
|
40 | 40 |
def receive(incoming_events) |
41 | 41 |
anew = self.class.sentiment_hash |
42 | 42 |
incoming_events.each do |event| |
43 |
- Utils.values_at(event.payload, interpolated_options['content']).each do |content| |
|
43 |
+ Utils.values_at(event.payload, interpolated['content']).each do |content| |
|
44 | 44 |
sent_values = sentiment_values anew, content |
45 | 45 |
create_event :payload => { 'content' => content, |
46 | 46 |
'valence' => sent_values[0], |
@@ -56,17 +56,17 @@ module Agents |
||
56 | 56 |
end |
57 | 57 |
|
58 | 58 |
def working? |
59 |
- Agents::ShellCommandAgent.should_run? && event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
59 |
+ Agents::ShellCommandAgent.should_run? && event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
60 | 60 |
end |
61 | 61 |
|
62 | 62 |
def receive(incoming_events) |
63 | 63 |
incoming_events.each do |event| |
64 |
- handle(interpolated_options(event.payload), event) |
|
64 |
+ handle(interpolated(event.payload), event) |
|
65 | 65 |
end |
66 | 66 |
end |
67 | 67 |
|
68 | 68 |
def check |
69 |
- handle(interpolated_options) |
|
69 |
+ handle(interpolated) |
|
70 | 70 |
end |
71 | 71 |
|
72 | 72 |
private |
@@ -44,20 +44,20 @@ module Agents |
||
44 | 44 |
end |
45 | 45 |
|
46 | 46 |
def webhook |
47 |
- interpolated_options[:webhook].presence || DEFAULT_WEBHOOK |
|
47 |
+ interpolated[:webhook].presence || DEFAULT_WEBHOOK |
|
48 | 48 |
end |
49 | 49 |
|
50 | 50 |
def username |
51 |
- interpolated_options[:username].presence || DEFAULT_USERNAME |
|
51 |
+ interpolated[:username].presence || DEFAULT_USERNAME |
|
52 | 52 |
end |
53 | 53 |
|
54 | 54 |
def slack_notifier |
55 |
- @slack_notifier ||= Slack::Notifier.new(interpolated_options[:team_name], interpolated_options[:auth_token], webhook, username: username) |
|
55 |
+ @slack_notifier ||= Slack::Notifier.new(interpolated[:team_name], interpolated[:auth_token], webhook, username: username) |
|
56 | 56 |
end |
57 | 57 |
|
58 | 58 |
def receive(incoming_events) |
59 | 59 |
incoming_events.each do |event| |
60 |
- opts = interpolated_options(event.payload) |
|
60 |
+ opts = interpolated(event.payload) |
|
61 | 61 |
slack_notifier.ping opts[:message], channel: opts[:channel], username: opts[:username] |
62 | 62 |
end |
63 | 63 |
end |
@@ -35,7 +35,7 @@ module Agents |
||
35 | 35 |
end |
36 | 36 |
|
37 | 37 |
def url |
38 |
- interpolated_options['url'] |
|
38 |
+ interpolated['url'] |
|
39 | 39 |
end |
40 | 40 |
|
41 | 41 |
def check |
@@ -28,7 +28,7 @@ module Agents |
||
28 | 28 |
end |
29 | 29 |
|
30 | 30 |
def working? |
31 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
31 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
32 | 32 |
end |
33 | 33 |
|
34 | 34 |
def translate(text, to, access_token) |
@@ -59,14 +59,14 @@ module Agents |
||
59 | 59 |
|
60 | 60 |
def receive(incoming_events) |
61 | 61 |
auth_uri = URI "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13" |
62 |
- response = postform auth_uri, :client_id => interpolated_options['client_id'], |
|
63 |
- :client_secret => interpolated_options['client_secret'], |
|
62 |
+ response = postform auth_uri, :client_id => interpolated['client_id'], |
|
63 |
+ :client_secret => interpolated['client_secret'], |
|
64 | 64 |
:scope => "http://api.microsofttranslator.com", |
65 | 65 |
:grant_type => "client_credentials" |
66 | 66 |
access_token = JSON.parse(response.body)["access_token"] |
67 | 67 |
incoming_events.each do |event| |
68 | 68 |
translated_event = {} |
69 |
- opts = interpolated_options(event.payload) |
|
69 |
+ opts = interpolated(event.payload) |
|
70 | 70 |
opts['content'].each_pair do |key, value| |
71 | 71 |
translated_event[key] = translate(value.first, opts['to'], access_token) |
72 | 72 |
end |
@@ -51,13 +51,13 @@ module Agents |
||
51 | 51 |
end |
52 | 52 |
|
53 | 53 |
def working? |
54 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
54 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
55 | 55 |
end |
56 | 56 |
|
57 | 57 |
def receive(incoming_events) |
58 | 58 |
incoming_events.each do |event| |
59 | 59 |
|
60 |
- opts = interpolated_options(event.payload) |
|
60 |
+ opts = interpolated(event.payload) |
|
61 | 61 |
|
62 | 62 |
match = opts['rules'].all? do |rule| |
63 | 63 |
value_at_path = Utils.value_at(event['payload'], rule['path']) |
@@ -102,7 +102,7 @@ module Agents |
||
102 | 102 |
end |
103 | 103 |
|
104 | 104 |
def keep_event? |
105 |
- interpolated_options['keep_event'] == 'true' |
|
105 |
+ interpolated['keep_event'] == 'true' |
|
106 | 106 |
end |
107 | 107 |
end |
108 | 108 |
end |
@@ -39,18 +39,18 @@ module Agents |
||
39 | 39 |
end |
40 | 40 |
|
41 | 41 |
def receive(incoming_events) |
42 |
- @client = Twilio::REST::Client.new interpolated_options['account_sid'], interpolated_options['auth_token'] |
|
42 |
+ @client = Twilio::REST::Client.new interpolated['account_sid'], interpolated['auth_token'] |
|
43 | 43 |
memory['pending_calls'] ||= {} |
44 | 44 |
incoming_events.each do |event| |
45 | 45 |
message = (event.payload['message'].presence || event.payload['text'].presence || event.payload['sms'].presence).to_s |
46 | 46 |
if message.present? |
47 |
- if interpolated_options(event.payload)['receive_call'].to_s == 'true' |
|
47 |
+ if interpolated(event.payload)['receive_call'].to_s == 'true' |
|
48 | 48 |
secret = SecureRandom.hex 3 |
49 | 49 |
memory['pending_calls'][secret] = message |
50 | 50 |
make_call secret |
51 | 51 |
end |
52 | 52 |
|
53 |
- if interpolated_options(event.payload)['receive_text'].to_s == 'true' |
|
53 |
+ if interpolated(event.payload)['receive_text'].to_s == 'true' |
|
54 | 54 |
message = message.slice 0..160 |
55 | 55 |
send_message message |
56 | 56 |
end |
@@ -59,19 +59,19 @@ module Agents |
||
59 | 59 |
end |
60 | 60 |
|
61 | 61 |
def working? |
62 |
- last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
62 |
+ last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs? |
|
63 | 63 |
end |
64 | 64 |
|
65 | 65 |
def send_message(message) |
66 |
- @client.account.sms.messages.create :from => interpolated_options['sender_cell'], |
|
67 |
- :to => interpolated_options['receiver_cell'], |
|
66 |
+ @client.account.sms.messages.create :from => interpolated['sender_cell'], |
|
67 |
+ :to => interpolated['receiver_cell'], |
|
68 | 68 |
:body => message |
69 | 69 |
end |
70 | 70 |
|
71 | 71 |
def make_call(secret) |
72 |
- @client.account.calls.create :from => interpolated_options['sender_cell'], |
|
73 |
- :to => interpolated_options['receiver_cell'], |
|
74 |
- :url => post_url(interpolated_options['server_url'], secret) |
|
72 |
+ @client.account.calls.create :from => interpolated['sender_cell'], |
|
73 |
+ :to => interpolated['receiver_cell'], |
|
74 |
+ :url => post_url(interpolated['server_url'], secret) |
|
75 | 75 |
end |
76 | 76 |
|
77 | 77 |
def post_url(server_url, secret) |
@@ -25,7 +25,7 @@ module Agents |
||
25 | 25 |
end |
26 | 26 |
|
27 | 27 |
def working? |
28 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && most_recent_event && most_recent_event.payload['success'] == true && !recent_error_logs? |
|
28 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && most_recent_event && most_recent_event.payload['success'] == true && !recent_error_logs? |
|
29 | 29 |
end |
30 | 30 |
|
31 | 31 |
def default_options |
@@ -41,7 +41,7 @@ module Agents |
||
41 | 41 |
incoming_events = incoming_events.first(20) |
42 | 42 |
end |
43 | 43 |
incoming_events.each do |event| |
44 |
- tweet_text = interpolated_options(event.payload)['message'] |
|
44 |
+ tweet_text = interpolated(event.payload)['message'] |
|
45 | 45 |
begin |
46 | 46 |
tweet = publish_tweet tweet_text |
47 | 47 |
create_event :payload => { |
@@ -65,7 +65,7 @@ module Agents |
||
65 | 65 |
end |
66 | 66 |
|
67 | 67 |
def working? |
68 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
68 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
69 | 69 |
end |
70 | 70 |
|
71 | 71 |
def default_options |
@@ -80,7 +80,7 @@ module Agents |
||
80 | 80 |
filter = lookup_filter(filter) |
81 | 81 |
|
82 | 82 |
if filter |
83 |
- if interpolated_options['generate'] == "counts" |
|
83 |
+ if interpolated['generate'] == "counts" |
|
84 | 84 |
# Avoid memory pollution by reloading the Agent. |
85 | 85 |
agent = Agent.find(id) |
86 | 86 |
agent.memory['filter_counts'] ||= {} |
@@ -95,7 +95,7 @@ module Agents |
||
95 | 95 |
end |
96 | 96 |
|
97 | 97 |
def check |
98 |
- if interpolated_options['generate'] == "counts" && memory['filter_counts'] && memory['filter_counts'].length > 0 |
|
98 |
+ if interpolated['generate'] == "counts" && memory['filter_counts'] && memory['filter_counts'].length > 0 |
|
99 | 99 |
memory['filter_counts'].each do |filter, count| |
100 | 100 |
create_event :payload => { 'filter' => filter, 'count' => count, 'time' => Time.now.to_i } |
101 | 101 |
end |
@@ -106,7 +106,7 @@ module Agents |
||
106 | 106 |
protected |
107 | 107 |
|
108 | 108 |
def lookup_filter(filter) |
109 |
- interpolated_options['filters'].each do |known_filter| |
|
109 |
+ interpolated['filters'].each do |known_filter| |
|
110 | 110 |
if known_filter == filter |
111 | 111 |
return filter |
112 | 112 |
elsif known_filter.is_a?(Array) |
@@ -119,7 +119,7 @@ module Agents |
||
119 | 119 |
|
120 | 120 |
def remove_unused_keys!(agent, base) |
121 | 121 |
if agent.memory[base] |
122 |
- (agent.memory[base].keys - agent.interpolated_options['filters'].map {|f| f.is_a?(Array) ? f.first.to_s : f.to_s }).each do |removed_key| |
|
122 |
+ (agent.memory[base].keys - agent.interpolated['filters'].map {|f| f.is_a?(Array) ? f.first.to_s : f.to_s }).each do |removed_key| |
|
123 | 123 |
agent.memory[base].delete(removed_key) |
124 | 124 |
end |
125 | 125 |
end |
@@ -51,7 +51,7 @@ module Agents |
||
51 | 51 |
default_schedule "every_1h" |
52 | 52 |
|
53 | 53 |
def working? |
54 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
54 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
55 | 55 |
end |
56 | 56 |
|
57 | 57 |
def default_options |
@@ -76,15 +76,15 @@ module Agents |
||
76 | 76 |
end |
77 | 77 |
|
78 | 78 |
def starting_at |
79 |
- if interpolated_options[:starting_at].present? |
|
80 |
- Time.parse(interpolated_options[:starting_at]) rescue created_at |
|
79 |
+ if interpolated[:starting_at].present? |
|
80 |
+ Time.parse(interpolated[:starting_at]) rescue created_at |
|
81 | 81 |
else |
82 | 82 |
created_at |
83 | 83 |
end |
84 | 84 |
end |
85 | 85 |
|
86 | 86 |
def include_retweets? |
87 |
- interpolated_options[:include_retweets] != "false" |
|
87 |
+ interpolated[:include_retweets] != "false" |
|
88 | 88 |
end |
89 | 89 |
|
90 | 90 |
def check |
@@ -93,7 +93,7 @@ module Agents |
||
93 | 93 |
opts.merge! :since_id => since_id unless since_id.nil? |
94 | 94 |
|
95 | 95 |
# http://rdoc.info/gems/twitter/Twitter/REST/Timelines#user_timeline-instance_method |
96 |
- tweets = twitter.user_timeline(interpolated_options['username'], opts) |
|
96 |
+ tweets = twitter.user_timeline(interpolated['username'], opts) |
|
97 | 97 |
|
98 | 98 |
tweets.each do |tweet| |
99 | 99 |
if tweet.created_at >= starting_at |
@@ -51,11 +51,11 @@ module Agents |
||
51 | 51 |
default_schedule "8pm" |
52 | 52 |
|
53 | 53 |
def working? |
54 |
- event_created_within?((interpolated_options['expected_update_period_in_days'].presence || 2).to_i) && !recent_error_logs? |
|
54 |
+ event_created_within?((interpolated['expected_update_period_in_days'].presence || 2).to_i) && !recent_error_logs? |
|
55 | 55 |
end |
56 | 56 |
|
57 | 57 |
def key_setup? |
58 |
- interpolated_options['api_key'].present? && interpolated_options['api_key'] != "your-key" |
|
58 |
+ interpolated['api_key'].present? && interpolated['api_key'] != "your-key" |
|
59 | 59 |
end |
60 | 60 |
|
61 | 61 |
def default_options |
@@ -69,15 +69,15 @@ module Agents |
||
69 | 69 |
end |
70 | 70 |
|
71 | 71 |
def service |
72 |
- interpolated_options["service"].presence || "wunderground" |
|
72 |
+ interpolated["service"].presence || "wunderground" |
|
73 | 73 |
end |
74 | 74 |
|
75 | 75 |
def which_day |
76 |
- (interpolated_options["which_day"].presence || 1).to_i |
|
76 |
+ (interpolated["which_day"].presence || 1).to_i |
|
77 | 77 |
end |
78 | 78 |
|
79 | 79 |
def location |
80 |
- interpolated_options["location"].presence || interpolated_options["zipcode"] |
|
80 |
+ interpolated["location"].presence || interpolated["zipcode"] |
|
81 | 81 |
end |
82 | 82 |
|
83 | 83 |
def validate_options |
@@ -89,12 +89,12 @@ module Agents |
||
89 | 89 |
end |
90 | 90 |
|
91 | 91 |
def wunderground |
92 |
- Wunderground.new(interpolated_options['api_key']).forecast_for(location)['forecast']['simpleforecast']['forecastday'] if key_setup? |
|
92 |
+ Wunderground.new(interpolated['api_key']).forecast_for(location)['forecast']['simpleforecast']['forecastday'] if key_setup? |
|
93 | 93 |
end |
94 | 94 |
|
95 | 95 |
def forecastio |
96 | 96 |
if key_setup? |
97 |
- ForecastIO.api_key = interpolated_options['api_key'] |
|
97 |
+ ForecastIO.api_key = interpolated['api_key'] |
|
98 | 98 |
lat, lng = location.split(',') |
99 | 99 |
ForecastIO.forecast(lat,lng)['daily']['data'] |
100 | 100 |
end |
@@ -27,7 +27,7 @@ module Agents |
||
27 | 27 |
event_description do |
28 | 28 |
<<-MD |
29 | 29 |
The event payload is base on the value of the `payload_path` option, |
30 |
- which is set to `#{interpolated_options['payload_path']}`. |
|
30 |
+ which is set to `#{interpolated['payload_path']}`. |
|
31 | 31 |
MD |
32 | 32 |
end |
33 | 33 |
|
@@ -40,7 +40,7 @@ module Agents |
||
40 | 40 |
def receive_web_request(params, method, format) |
41 | 41 |
secret = params.delete('secret') |
42 | 42 |
return ["Please use POST requests only", 401] unless method == "post" |
43 |
- return ["Not Authorized", 401] unless secret == interpolated_options['secret'] |
|
43 |
+ return ["Not Authorized", 401] unless secret == interpolated['secret'] |
|
44 | 44 |
|
45 | 45 |
create_event(:payload => payload_for(params)) |
46 | 46 |
|
@@ -48,7 +48,7 @@ module Agents |
||
48 | 48 |
end |
49 | 49 |
|
50 | 50 |
def working? |
51 |
- event_created_within?(interpolated_options['expected_receive_period_in_days']) && !recent_error_logs? |
|
51 |
+ event_created_within?(interpolated['expected_receive_period_in_days']) && !recent_error_logs? |
|
52 | 52 |
end |
53 | 53 |
|
54 | 54 |
def validate_options |
@@ -58,7 +58,7 @@ module Agents |
||
58 | 58 |
end |
59 | 59 |
|
60 | 60 |
def payload_for(params) |
61 |
- Utils.value_at(params, interpolated_options['payload_path']) || {} |
|
61 |
+ Utils.value_at(params, interpolated['payload_path']) || {} |
|
62 | 62 |
end |
63 | 63 |
end |
64 | 64 |
end |
@@ -55,11 +55,11 @@ module Agents |
||
55 | 55 |
MD |
56 | 56 |
|
57 | 57 |
event_description do |
58 |
- "Events will have the fields you specified. Your options look like:\n\n #{Utils.pretty_print interpolated_options['extract']}" |
|
58 |
+ "Events will have the fields you specified. Your options look like:\n\n #{Utils.pretty_print interpolated['extract']}" |
|
59 | 59 |
end |
60 | 60 |
|
61 | 61 |
def working? |
62 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
62 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
63 | 63 |
end |
64 | 64 |
|
65 | 65 |
def default_options |
@@ -125,7 +125,7 @@ module Agents |
||
125 | 125 |
end |
126 | 126 |
|
127 | 127 |
def check |
128 |
- check_url interpolated_options['url'] |
|
128 |
+ check_url interpolated['url'] |
|
129 | 129 |
end |
130 | 130 |
|
131 | 131 |
def check_url(in_url) |
@@ -136,7 +136,7 @@ module Agents |
||
136 | 136 |
response = faraday.get(url) |
137 | 137 |
if response.success? |
138 | 138 |
body = response.body |
139 |
- if (encoding = interpolated_options['force_encoding']).present? |
|
139 |
+ if (encoding = interpolated['force_encoding']).present? |
|
140 | 140 |
body = body.encode(Encoding::UTF_8, encoding) |
141 | 141 |
end |
142 | 142 |
doc = parse(body) |
@@ -148,7 +148,7 @@ module Agents |
||
148 | 148 |
end |
149 | 149 |
else |
150 | 150 |
output = {} |
151 |
- interpolated_options['extract'].each do |name, extraction_details| |
|
151 |
+ interpolated['extract'].each do |name, extraction_details| |
|
152 | 152 |
if extraction_type == "json" |
153 | 153 |
result = Utils.values_at(doc, extraction_details['path']) |
154 | 154 |
log "Extracting #{extraction_type} at #{extraction_details['path']}: #{result}" |
@@ -181,17 +181,17 @@ module Agents |
||
181 | 181 |
output[name] = result |
182 | 182 |
end |
183 | 183 |
|
184 |
- num_unique_lengths = interpolated_options['extract'].keys.map { |name| output[name].length }.uniq |
|
184 |
+ num_unique_lengths = interpolated['extract'].keys.map { |name| output[name].length }.uniq |
|
185 | 185 |
|
186 | 186 |
if num_unique_lengths.length != 1 |
187 |
- error "Got an uneven number of matches for #{interpolated_options['name']}: #{interpolated_options['extract'].inspect}" |
|
187 |
+ error "Got an uneven number of matches for #{interpolated['name']}: #{interpolated['extract'].inspect}" |
|
188 | 188 |
return |
189 | 189 |
end |
190 | 190 |
|
191 | 191 |
old_events = previous_payloads num_unique_lengths.first |
192 | 192 |
num_unique_lengths.first.times do |index| |
193 | 193 |
result = {} |
194 |
- interpolated_options['extract'].keys.each do |name| |
|
194 |
+ interpolated['extract'].keys.each do |name| |
|
195 | 195 |
result[name] = output[name][index] |
196 | 196 |
if name.to_s == 'url' |
197 | 197 |
result[name] = (response.env[:url] + result[name]).to_s |
@@ -223,11 +223,11 @@ module Agents |
||
223 | 223 |
# If mode is set to 'on_change', this method may return false and update an existing |
224 | 224 |
# event to expire further in the future. |
225 | 225 |
def store_payload!(old_events, result) |
226 |
- if !interpolated_options['mode'].present? |
|
226 |
+ if !interpolated['mode'].present? |
|
227 | 227 |
return true |
228 |
- elsif interpolated_options['mode'].to_s == "all" |
|
228 |
+ elsif interpolated['mode'].to_s == "all" |
|
229 | 229 |
return true |
230 |
- elsif interpolated_options['mode'].to_s == "on_change" |
|
230 |
+ elsif interpolated['mode'].to_s == "on_change" |
|
231 | 231 |
result_json = result.to_json |
232 | 232 |
old_events.each do |old_event| |
233 | 233 |
if old_event.payload.to_json == result_json |
@@ -238,12 +238,12 @@ module Agents |
||
238 | 238 |
end |
239 | 239 |
return true |
240 | 240 |
end |
241 |
- raise "Illegal options[mode]: " + interpolated_options['mode'].to_s |
|
241 |
+ raise "Illegal options[mode]: " + interpolated['mode'].to_s |
|
242 | 242 |
end |
243 | 243 |
|
244 | 244 |
def previous_payloads(num_events) |
245 |
- if interpolated_options['uniqueness_look_back'].present? |
|
246 |
- look_back = interpolated_options['uniqueness_look_back'].to_i |
|
245 |
+ if interpolated['uniqueness_look_back'].present? |
|
246 |
+ look_back = interpolated['uniqueness_look_back'].to_i |
|
247 | 247 |
else |
248 | 248 |
# Larger of UNIQUENESS_FACTOR * num_events and UNIQUENESS_LOOK_BACK |
249 | 249 |
look_back = UNIQUENESS_FACTOR * num_events |
@@ -251,18 +251,18 @@ module Agents |
||
251 | 251 |
look_back = UNIQUENESS_LOOK_BACK |
252 | 252 |
end |
253 | 253 |
end |
254 |
- events.order("id desc").limit(look_back) if interpolated_options['mode'].present? && interpolated_options['mode'].to_s == "on_change" |
|
254 |
+ events.order("id desc").limit(look_back) if interpolated['mode'].present? && interpolated['mode'].to_s == "on_change" |
|
255 | 255 |
end |
256 | 256 |
|
257 | 257 |
def extract_full_json? |
258 |
- !interpolated_options['extract'].present? && extraction_type == "json" |
|
258 |
+ !interpolated['extract'].present? && extraction_type == "json" |
|
259 | 259 |
end |
260 | 260 |
|
261 | 261 |
def extraction_type |
262 |
- (interpolated_options['type'] || begin |
|
263 |
- if interpolated_options['url'] =~ /\.(rss|xml)$/i |
|
262 |
+ (interpolated['type'] || begin |
|
263 |
+ if interpolated['url'] =~ /\.(rss|xml)$/i |
|
264 | 264 |
"xml" |
265 |
- elsif interpolated_options['url'] =~ /\.json$/i |
|
265 |
+ elsif interpolated['url'] =~ /\.json$/i |
|
266 | 266 |
"json" |
267 | 267 |
else |
268 | 268 |
"html" |
@@ -295,7 +295,7 @@ module Agents |
||
295 | 295 |
@faraday ||= Faraday.new { |builder| |
296 | 296 |
builder.headers = headers if headers.length > 0 |
297 | 297 |
|
298 |
- if (user_agent = interpolated_options['user_agent']).present? |
|
298 |
+ if (user_agent = interpolated['user_agent']).present? |
|
299 | 299 |
builder.headers[:user_agent] = user_agent |
300 | 300 |
end |
301 | 301 |
|
@@ -318,7 +318,7 @@ module Agents |
||
318 | 318 |
end |
319 | 319 |
|
320 | 320 |
def basic_auth_credentials |
321 |
- case value = interpolated_options['basic_auth'] |
|
321 |
+ case value = interpolated['basic_auth'] |
|
322 | 322 |
when nil, '' |
323 | 323 |
return nil |
324 | 324 |
when Array |
@@ -330,7 +330,7 @@ module Agents |
||
330 | 330 |
end |
331 | 331 |
|
332 | 332 |
def headers |
333 |
- interpolated_options['headers'].presence || {} |
|
333 |
+ interpolated['headers'].presence || {} |
|
334 | 334 |
end |
335 | 335 |
end |
336 | 336 |
end |
@@ -27,7 +27,7 @@ module Agents |
||
27 | 27 |
end |
28 | 28 |
|
29 | 29 |
def working? |
30 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && most_recent_event.payload['success'] == true && !recent_error_logs? |
|
30 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && most_recent_event.payload['success'] == true && !recent_error_logs? |
|
31 | 31 |
end |
32 | 32 |
|
33 | 33 |
def default_options |
@@ -47,7 +47,7 @@ module Agents |
||
47 | 47 |
incoming_events = incoming_events.first(20) |
48 | 48 |
end |
49 | 49 |
incoming_events.each do |event| |
50 |
- tweet_text = Utils.value_at(event.payload, interpolated_options(event.payload)['message_path']) |
|
50 |
+ tweet_text = Utils.value_at(event.payload, interpolated(event.payload)['message_path']) |
|
51 | 51 |
if event.agent.type == "Agents::TwitterUserAgent" |
52 | 52 |
tweet_text = unwrap_tco_urls(tweet_text, event.payload) |
53 | 53 |
end |
@@ -77,7 +77,7 @@ module Agents |
||
77 | 77 |
end |
78 | 78 |
|
79 | 79 |
def working? |
80 |
- event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs? |
|
80 |
+ event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs? |
|
81 | 81 |
end |
82 | 82 |
|
83 | 83 |
def default_options |
@@ -92,7 +92,7 @@ module Agents |
||
92 | 92 |
|
93 | 93 |
def check |
94 | 94 |
since_id = memory['since_id'] || nil |
95 |
- opts = {:uid => interpolated_options['uid'].to_i} |
|
95 |
+ opts = {:uid => interpolated['uid'].to_i} |
|
96 | 96 |
opts.merge! :since_id => since_id unless since_id.nil? |
97 | 97 |
|
98 | 98 |
# http://open.weibo.com/wiki/2/statuses/user_timeline/en |